home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / comm / misc / VideoHyperText.lha / vht.rexx next >
Encoding:
OS/2 REXX Batch file  |  1995-04-11  |  2.8 KB  |  104 lines

  1. /*     PROGRAMM:         VideoHyperText 
  2.     ZWECK:            AmigaGuide-Interface für Videotext
  3.                 (Print-Technik Teletext Decoder Amiga)
  4.     AUTOR/COPYRIGHT:    Mark Nowack
  5.     HISTORY:        V0.9: Grundstruktur erstellt
  6.                 V1.0: rekursive Seitenerstellung */
  7.  
  8. OPTIONS RESULTS
  9.  
  10. IF ~SHOW("P","vtext") THEN        /* Videotext bei Bedarf starten */
  11.     DO
  12.     address command
  13.     'run >NIL: VT:vtext'
  14.     waitforport 'vtext'
  15.     END
  16.  
  17. IF ~EXISTS('vht:') THEN            /* bei Bedarf Verzeichnis im Ram: anlegen */
  18.     DO
  19.     address command
  20.     'makedir RAM:vht'
  21.     'assign vht: RAM:vht'
  22.     END
  23.  
  24. address 'vtext'                /* Port adressieren */
  25.  
  26. donec=0                    /* noch keine Seite erstellt */
  27.  
  28. side=100                /* Wurzelseite festlegen */
  29.  
  30. DO WHILE side~='Q'            /* Seitenerstellung aufrufen */
  31.         CALL Page(side)
  32.     SAY "Welche Seite bitte (q to quit) ? "
  33.     PULL side
  34.     END
  35. EXIT                    /* Programmende */
  36.  
  37.  
  38. Page: PROCEDURE EXPOSE donec donew.     /* bereits erstellte Seiten global */
  39. ARG side                /* Parameter: Seitennummer */
  40. /* SAY side */    /* für Ausgabe der jeweils aktuellen Seite diese Zeile entkommentieren */        
  41. donec=donec+1                /* Seite als erstellt merken */
  42. donew.donec=side
  43. donowc=0                /* Anzahl der Folgeseiten erst null */
  44. OPTIONS RESULTS
  45. 'active'                /* VT aktiv */
  46. 'selectpage' side            /* Seite anfordern */
  47. 'waitforpage' 40            /* maximal 40 sec warten */
  48. re=result                /* evt. Timeout-Warnung retten */
  49. 'inactive'                /* VT pausiert */    
  50. OPEN(out,"vht:"||side,'WRITE')        /* Ausgabedatei öffnen */
  51. WRITELN(out,'@DATABASE "'||side||'"')   /* Guide-Header schreiben */
  52. WRITELN(out,'@NODE Main')
  53. IF re=="TIMEOUT" THEN            /* wenn Seite nicht gefunden wurde...*/
  54.     DO                /*...in der Datei vermerken */
  55.     WRITELN(out,' ')
  56.     WRITELN(out,'###  Diese Seite wurde nicht gefunden  ###')
  57.            END
  58. ELSE                    /* wenn Seite gefunden wurde: */
  59.     DO                
  60.     DROP seite
  61.     'active'            /* VT aktiv */
  62.      'getpage' seite            /* aktuelle Seite in "seite" lesen */
  63.     'inactive'            /* VT schläft */
  64.     WRITELN(out,substr(seite,1,40)) /* Statuszeile schreiben */
  65.     DO i=4 TO 23                /* Zeilen nach Folgeseiten..*/
  66.         lin=substr(seite,i*40+1,40)    /*..durchsuchen, guide-for- */
  67.         oulin=''            /*.. matiert schreiben */
  68.         a=1
  69.         DO WHILE (a<41)
  70.             nr=substr(lin,a,3)
  71.             IF ~DATATYPE(nr,'N') THEN
  72.                 DO
  73.                 oulin=oulin||substr(nr,1,1)
  74.                 END
  75.             ELSE
  76.                 DO
  77.                 IF nr>99 THEN 
  78.                     DO
  79.                     oulin=oulin||'@{"'||nr||'" LINK "'||nr||'/Main"}'
  80.                     donowc=donowc+1     /* Folgeseite...*/
  81.                     donoww.donowc=nr /*.. merken */
  82.                     a=a+2
  83.                     END
  84.                 ELSE
  85.                     DO
  86.                     oulin=oulin||substr(nr,1,1)
  87.                     END
  88.                 END
  89.             a=a+1
  90.             END
  91.         WRITELN(out,oulin)
  92.         END
  93.     END
  94. WRITELN(out,'@ENDNODE')            /* guide-Datei-Endung schreiben */
  95. CLOSE(out)                /* Ausgabedatei schließen */
  96. DO i=1 TO donowc            /* aktuelle Folgeseiten mit...*/
  97.         must="TRUE"            /*..bereits erstellten vergleichen..*/
  98.     DO j=1 TO donec            /*..neue Seiten erstellen */
  99.         IF donoww.i==donew.j THEN must="FALSE"
  100.         END
  101.     IF must=="TRUE" THEN CALL Page(donoww.i)
  102.     END
  103. RETURN 0                /* Ende der Erstellfunktion */
  104.